

<!DOCTYPE html>
<html class="writer-html5" lang="en" >
<head>
  <meta charset="utf-8" />
  
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
  
  <title>ceph-mgr 管理员指南 &mdash; Ceph Documentation</title>
  

  
  <link rel="stylesheet" href="../../_static/ceph.css" type="text/css" />
  <link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
  <link rel="stylesheet" href="../../_static/graphviz.css" type="text/css" />
  <link rel="stylesheet" href="../../_static/css/custom.css" type="text/css" />

  
  
    <link rel="shortcut icon" href="../../_static/favicon.ico"/>
  

  
  

  

  
  <!--[if lt IE 9]>
    <script src="../../_static/js/html5shiv.min.js"></script>
  <![endif]-->
  
    
      <script type="text/javascript" id="documentation_options" data-url_root="../../" src="../../_static/documentation_options.js"></script>
        <script src="../../_static/jquery.js"></script>
        <script src="../../_static/underscore.js"></script>
        <script src="../../_static/doctools.js"></script>
    
    <script type="text/javascript" src="../../_static/js/theme.js"></script>

    
    <link rel="index" title="Index" href="../../genindex/" />
    <link rel="search" title="Search" href="../../search/" />
    <link rel="next" title="ceph-mgr 模块开发指南" href="../modules/" />
    <link rel="prev" title="Ceph 管理器守护进程" href="../" /> 
</head>

<body class="wy-body-for-nav">

   
  <header class="top-bar">
    

















<div role="navigation" aria-label="breadcrumbs navigation">

  <ul class="wy-breadcrumbs">
    
      <li><a href="../../" class="icon icon-home"></a> &raquo;</li>
        
          <li><a href="../">Ceph 管理器守护进程</a> &raquo;</li>
        
      <li>ceph-mgr 管理员指南</li>
    
    
      <li class="wy-breadcrumbs-aside">
        
          
            <a href="../../_sources/mgr/administrator.rst.txt" rel="nofollow"> View page source</a>
          
        
      </li>
    
  </ul>

  
  <hr/>
</div>
  </header>
  <div class="wy-grid-for-nav">
    
    <nav data-toggle="wy-nav-shift" class="wy-nav-side">
      <div class="wy-side-scroll">
        <div class="wy-side-nav-search"  style="background: #eee" >
          

          
            <a href="../../">
          

          
            
            <img src="../../_static/logo.png" class="logo" alt="Logo"/>
          
          </a>

          

          
<div role="search">
  <form id="rtd-search-form" class="wy-form" action="../../search/" method="get">
    <input type="text" name="q" placeholder="Search docs" />
    <input type="hidden" name="check_keywords" value="yes" />
    <input type="hidden" name="area" value="default" />
  </form>
</div>

          
        </div>

        
        <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
          
            
            
              
            
            
              <ul class="current">
<li class="toctree-l1"><a class="reference internal" href="../../start/intro/">Ceph 简介</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../install/">安装 Ceph</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../cephadm/">Cephadm</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../rados/">Ceph 存储集群</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../cephfs/">Ceph 文件系统</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../rbd/">Ceph 块设备</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../radosgw/">Ceph 对象网关</a></li>
<li class="toctree-l1 current"><a class="reference internal" href="../">Ceph 管理器守护进程</a><ul class="current">
<li class="toctree-l2 current"><a class="current reference internal" href="#">安装和配置</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#id1">手动设置</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id2">客户端认证</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id3">高可用性</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id4">模块的使用</a></li>
<li class="toctree-l3"><a class="reference internal" href="#module-pool">Module Pool</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id5">调用模块命令</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id6">配置选项</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../modules/">模块编程</a></li>
<li class="toctree-l2"><a class="reference internal" href="../orchestrator_modules/">编写 orchestrator 插件</a></li>
<li class="toctree-l2"><a class="reference internal" href="../dashboard/">仪表盘模块</a></li>
<li class="toctree-l2"><a class="reference internal" href="../ceph_api/">Ceph RESTful API</a></li>
<li class="toctree-l2"><a class="reference internal" href="../alerts/">Alerts 模块</a></li>
<li class="toctree-l2"><a class="reference internal" href="../diskprediction/">DiskPrediction 模块</a></li>
<li class="toctree-l2"><a class="reference internal" href="../localpool/">localpool 模块</a></li>
<li class="toctree-l2"><a class="reference internal" href="../restful/">RESTful 模块</a></li>
<li class="toctree-l2"><a class="reference internal" href="../zabbix/">Zabbix 模块</a></li>
<li class="toctree-l2"><a class="reference internal" href="../prometheus/">Prometheus 模块</a></li>
<li class="toctree-l2"><a class="reference internal" href="../influx/">Influx 模块</a></li>
<li class="toctree-l2"><a class="reference internal" href="../hello/">Hello 模块</a></li>
<li class="toctree-l2"><a class="reference internal" href="../telegraf/">Telegraf 模块</a></li>
<li class="toctree-l2"><a class="reference internal" href="../telemetry/">Telemetry 模块</a></li>
<li class="toctree-l2"><a class="reference internal" href="../iostat/">Iostat 模块</a></li>
<li class="toctree-l2"><a class="reference internal" href="../crash/">Crash 模块</a></li>
<li class="toctree-l2"><a class="reference internal" href="../insights/">Insights 模块</a></li>
<li class="toctree-l2"><a class="reference internal" href="../orchestrator/">Orchestrator 模块</a></li>
<li class="toctree-l2"><a class="reference internal" href="../rook/">Rook 模块</a></li>
<li class="toctree-l2"><a class="reference internal" href="../rgw/">RGW 模块</a></li>
<li class="toctree-l2"><a class="reference internal" href="../mds_autoscaler/">MDS Autoscaler 模块</a></li>
<li class="toctree-l2"><a class="reference internal" href="../nfs/">NFS 模块</a></li>
<li class="toctree-l2"><a class="reference internal" href="../progress/">Progress 模块</a></li>
<li class="toctree-l2"><a class="reference internal" href="../cli_api/">CLI API 命令模块</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../dashboard/">Ceph 仪表盘</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../api/">API 文档</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../architecture/">体系结构</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../dev/developer_guide/">开发者指南</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../dev/internals/">Ceph 内幕</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../governance/">项目管理</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../foundation/">Ceph 基金会</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../ceph-volume/">ceph-volume</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../releases/general/">Ceph 版本（总目录）</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../releases/">Ceph 版本（索引）</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../security/">Security</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../glossary/">Ceph 术语</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../jaegertracing/">Tracing</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../translation_cn/">中文版翻译资源</a></li>
</ul>

            
          
        </div>
        
      </div>
    </nav>

    <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">

      
      <nav class="wy-nav-top" aria-label="top navigation">
        
          <i data-toggle="wy-nav-top" class="fa fa-bars"></i>
          <a href="../../">Ceph</a>
        
      </nav>


      <div class="wy-nav-content">
        
        <div class="rst-content">
        
          <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
           <div itemprop="articleBody">
            
<div id="dev-warning" class="admonition note">
  <p class="first admonition-title">Notice</p>
  <p class="last">This document is for a development version of Ceph.</p>
</div>
  <div id="docubetter" align="right" style="padding: 5px; font-weight: bold;">
    <a href="https://pad.ceph.com/p/Report_Documentation_Bugs">Report a Documentation Bug</a>
  </div>

  
  <div class="section" id="ceph-mgr">
<span id="mgr-administrator-guide"></span><h1>ceph-mgr 管理员指南<a class="headerlink" href="#ceph-mgr" title="Permalink to this headline">¶</a></h1>
<div class="section" id="id1">
<h2>手动设置<a class="headerlink" href="#id1" title="Permalink to this headline">¶</a></h2>
<p>平时，你可以用 ceph-ansible 之类的工具配置 ceph-mgr 守护进程。下面说明了如何手动配置好一个 ceph-mgr 守护进程。</p>
<p>首先，给守护进程创建认证密钥：</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span>ceph auth get-or-create mgr.$name mon &#39;allow profile mgr&#39; osd &#39;allow *&#39; mds &#39;allow *&#39;
</pre></div>
</div>
<p>把创建的密钥放入 <code class="docutils literal notranslate"><span class="pre">mgr</span> <span class="pre">data</span></code> 所指路径的 <code class="docutils literal notranslate"><span class="pre">keyring</span></code> 文件内，
对于名为 ceph 的集群、 mgr 的 $name 为 foo 的路径应该是
<code class="docutils literal notranslate"><span class="pre">/var/lib/ceph/mgr/ceph-foo</span></code> 内的文件 <code class="docutils literal notranslate"><span class="pre">/var/lib/ceph/mgr/ceph-foo/keyring</span></code> 。</p>
<p>启动 ceph-mgr 守护进程：</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span>ceph-mgr -i $name
</pre></div>
</div>
<p>通过 <code class="docutils literal notranslate"><span class="pre">ceph</span> <span class="pre">status</span></code> 的输出可检查 mgr 是否起来了，起来的话应该会包含一行 mgr 状态：</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span>mgr active: $name
</pre></div>
</div>
</div>
<div class="section" id="id2">
<h2>客户端认证<a class="headerlink" href="#id2" title="Permalink to this headline">¶</a></h2>
<p>管理器是一种新的守护进程，需要新的 CephX 能力。如果你是从旧版
Ceph 升级集群、或者使用默认的安装/部署工具，那么管理客户端应该可以自动获取到这个能力。如果你用了非标准工具，在调用某些 ceph
集群命令时可能会遇到 EACCES 错误。要修正此问题，需<a class="reference external" href="../../rados/operations/user-management/#modify-user-capabilities">更改用户能力</a>，在客户端的 cephx 能力里加上 <code class="docutils literal notranslate"><span class="pre">mgr</span> <span class="pre">allow</span> <span class="pre">\*</span></code>
声明。</p>
</div>
<div class="section" id="id3">
<h2>高可用性<a class="headerlink" href="#id3" title="Permalink to this headline">¶</a></h2>
<p>通常来说，你应该在每台运行 ceph-mon 守护进程的主机上都配置一个
ceph-mgr ，以实现相同级别的可用性。</p>
<p>默认情况下，监视器会把任意一个最先启动的
ceph-mgr 例程当作活跃的，其它的作为备用。
ceph-mgr 守护进程无需形成法定人数。</p>
<p>如果活跃的守护进程在 <a class="reference internal" href="#confval-mon_mgr_beacon_grace"><code class="xref std std-confval docutils literal notranslate"><span class="pre">mon_mgr_beacon_grace</span></code></a> 这么长的时间内都没向监视器们发送信标，那它就会被备用顶替。</p>
<p>如果你想提前做故障切换，可以用 <code class="docutils literal notranslate"><span class="pre">ceph</span> <span class="pre">mgr</span> <span class="pre">fail</span> <span class="pre">&lt;mgr</span> <span class="pre">name&gt;</span></code> 把
ceph-mgr 明确地标记为已失效。</p>
</div>
<div class="section" id="id4">
<h2>模块的使用<a class="headerlink" href="#id4" title="Permalink to this headline">¶</a></h2>
<p>用 <code class="docutils literal notranslate"><span class="pre">ceph</span> <span class="pre">mgr</span> <span class="pre">module</span> <span class="pre">ls</span></code> 命令可查看有哪些模块可用、
哪些是当前已经启用的；用 <code class="docutils literal notranslate"><span class="pre">ceph</span> <span class="pre">mgr</span> <span class="pre">module</span> <span class="pre">ls</span> <span class="pre">--format=json-pretty</span></code> 命令可以查看已禁用模块的详细元数据。
启用或禁用模块分别使用命令 <code class="docutils literal notranslate"><span class="pre">ceph</span> <span class="pre">mgr</span> <span class="pre">module</span> <span class="pre">enable</span> <span class="pre">&lt;module&gt;</span></code>
和 <code class="docutils literal notranslate"><span class="pre">ceph</span> <span class="pre">mgr</span> <span class="pre">module</span> <span class="pre">disable</span> <span class="pre">&lt;module&gt;</span></code> 。</p>
<p>If a module is <em>enabled</em> then the active ceph-mgr daemon will load
and execute it.  In the case of modules that provide a service,
such as an HTTP server, the module may publish its address when it
is loaded.  To see the addresses of such modules, use the command
<code class="docutils literal notranslate"><span class="pre">ceph</span> <span class="pre">mgr</span> <span class="pre">services</span></code>.</p>
<p>Some modules may also implement a special standby mode which runs on
standby ceph-mgr daemons as well as the active daemon.  This enables
modules that provide services to redirect their clients to the active
daemon, if the client tries to connect to a standby.</p>
<p>Consult the documentation pages for individual manager modules for more
information about what functionality each module provides.</p>
<p>Here is an example of enabling the <a class="reference internal" href="../../glossary/#term-Dashboard"><span class="xref std std-term">Dashboard</span></a> module:</p>
<div class="highlight-console notranslate"><div class="highlight"><pre><span></span><span class="gp">$ </span>ceph mgr module ls
<span class="go">{</span>
<span class="go">        &quot;enabled_modules&quot;: [</span>
<span class="go">                &quot;restful&quot;,</span>
<span class="go">                &quot;status&quot;</span>
<span class="go">        ],</span>
<span class="go">        &quot;disabled_modules&quot;: [</span>
<span class="go">                &quot;dashboard&quot;</span>
<span class="go">        ]</span>
<span class="go">}</span>

<span class="gp">$ </span>ceph mgr module <span class="nb">enable</span> dashboard
<span class="gp">$ </span>ceph mgr module ls
<span class="go">{</span>
<span class="go">        &quot;enabled_modules&quot;: [</span>
<span class="go">                &quot;restful&quot;,</span>
<span class="go">                &quot;status&quot;,</span>
<span class="go">                &quot;dashboard&quot;</span>
<span class="go">        ],</span>
<span class="go">        &quot;disabled_modules&quot;: [</span>
<span class="go">        ]</span>
<span class="go">}</span>

<span class="gp">$ </span>ceph mgr services
<span class="go">{</span>
<span class="go">        &quot;dashboard&quot;: &quot;http://myserver.com:7789/&quot;,</span>
<span class="go">        &quot;restful&quot;: &quot;https://myserver.com:8789/&quot;</span>
<span class="go">}</span>
</pre></div>
</div>
<p>The first time the cluster starts, it uses the <a class="reference internal" href="#confval-mgr_initial_modules"><code class="xref std std-confval docutils literal notranslate"><span class="pre">mgr_initial_modules</span></code></a>
setting to override which modules to enable.  However, this setting
is ignored through the rest of the lifetime of the cluster: only
use it for bootstrapping.  For example, before starting your
monitor daemons for the first time, you might add a section like
this to your <code class="docutils literal notranslate"><span class="pre">ceph.conf</span></code>:</p>
<div class="highlight-ini notranslate"><div class="highlight"><pre><span></span><span class="k">[mon]</span>
    <span class="na">mgr_initial_modules</span> <span class="o">=</span> <span class="s">dashboard balancer</span>
</pre></div>
</div>
</div>
<div class="section" id="module-pool">
<h2>Module Pool<a class="headerlink" href="#module-pool" title="Permalink to this headline">¶</a></h2>
<p>The manager creates a pool for use by its module to store state. The name of
this pool is <code class="docutils literal notranslate"><span class="pre">.mgr</span></code> (with the leading <code class="docutils literal notranslate"><span class="pre">.</span></code> indicating a reserved pool
name).</p>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>Prior to Quincy, the <code class="docutils literal notranslate"><span class="pre">devicehealth</span></code> module created a
<code class="docutils literal notranslate"><span class="pre">device_health_metrics</span></code> pool to store device SMART statistics. With
Quincy, this pool is automatically renamed to be the common manager module
pool.</p>
</div>
</div>
<div class="section" id="id5">
<h2>调用模块命令<a class="headerlink" href="#id5" title="Permalink to this headline">¶</a></h2>
<p>对于实现了命令行钩子的模块，其实现的命令可以像一般的 Ceph 命令那样调用。 Ceph 会自动把模块命令整合进标准 CLI 接口，并正确地路由到那个模块。</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">ceph</span> <span class="o">&lt;</span><span class="n">command</span> <span class="o">|</span> <span class="n">help</span><span class="o">&gt;</span>
</pre></div>
</div>
</div>
<div class="section" id="id6">
<h2>配置选项<a class="headerlink" href="#id6" title="Permalink to this headline">¶</a></h2>
<dl class="std confval">
<dt id="confval-mgr_module_path">
<code class="sig-name descname"><span class="pre">mgr_module_path</span></code><a class="headerlink" href="#confval-mgr_module_path" title="Permalink to this definition">¶</a></dt>
<dd><blockquote>
<div><p>从这个路径载入模块</p>
<dl class="field-list simple">
<dt class="field-odd">type</dt>
<dd class="field-odd"><p><code class="docutils literal notranslate"><span class="pre">str</span></code></p>
</dd>
</dl>
</div></blockquote>
</dd></dl>

<dl class="std confval">
<dt id="confval-mgr_initial_modules">
<code class="sig-name descname"><span class="pre">mgr_initial_modules</span></code><a class="headerlink" href="#confval-mgr_initial_modules" title="Permalink to this definition">¶</a></dt>
<dd><blockquote>
<div><p>This list of module names is read by the monitor when the cluster is
first started after installation, to populate the list of enabled
manager modules.  Subsequent updates are done using the ‘mgr module
[enable|disable]’ commands.  List may be comma or space separated.</p>
<dl class="field-list simple">
<dt class="field-odd">type</dt>
<dd class="field-odd"><p><code class="docutils literal notranslate"><span class="pre">str</span></code></p>
</dd>
<dt class="field-even">default</dt>
<dd class="field-even"><p><code class="docutils literal notranslate"><span class="pre">restful</span> <span class="pre">iostat</span> <span class="pre">nfs</span></code></p>
</dd>
</dl>
</div></blockquote>
</dd></dl>

<dl class="std confval">
<dt id="confval-mgr_disabled_modules">
<code class="sig-name descname"><span class="pre">mgr_disabled_modules</span></code><a class="headerlink" href="#confval-mgr_disabled_modules" title="Permalink to this definition">¶</a></dt>
<dd><blockquote>
<div><p>A comma delimited list of module names. This list is read by manager
when it starts. By default, manager loads all modules found in
specified ‘mgr_module_path’, and it starts the enabled ones as
instructed. The modules in this list will not be loaded at all.</p>
<dl class="field-list simple">
<dt class="field-odd">type</dt>
<dd class="field-odd"><p><code class="docutils literal notranslate"><span class="pre">str</span></code></p>
</dd>
<dt class="field-even">see also</dt>
<dd class="field-even"><p><a class="reference internal" href="#confval-mgr_module_path"><code class="xref std std-confval docutils literal notranslate"><span class="pre">mgr_module_path</span></code></a></p>
</dd>
</dl>
</div></blockquote>
</dd></dl>

<dl class="std confval">
<dt id="confval-mgr_standby_modules">
<code class="sig-name descname"><span class="pre">mgr_standby_modules</span></code><a class="headerlink" href="#confval-mgr_standby_modules" title="Permalink to this definition">¶</a></dt>
<dd><blockquote>
<div><p>By default, the standby modules will answer incoming requests with a
HTTP redirect to the active manager, allowing users to point their
browser at any mgr node and find their way to an active mgr.  However,
this mode is problematic when using a load balancer because (1) the
redirect locations are usually private IPs and (2) the load balancer
can’t identify which mgr is the right one to send traffic to. If a
load balancer is being used, set this to false.</p>
<dl class="field-list simple">
<dt class="field-odd">type</dt>
<dd class="field-odd"><p><code class="docutils literal notranslate"><span class="pre">bool</span></code></p>
</dd>
<dt class="field-even">default</dt>
<dd class="field-even"><p><code class="docutils literal notranslate"><span class="pre">true</span></code></p>
</dd>
</dl>
</div></blockquote>
</dd></dl>

<dl class="std confval">
<dt id="confval-mgr_data">
<code class="sig-name descname"><span class="pre">mgr_data</span></code><a class="headerlink" href="#confval-mgr_data" title="Permalink to this definition">¶</a></dt>
<dd><blockquote>
<div><p>从这个路径载人守护进程数据（如密钥环）</p>
<dl class="field-list simple">
<dt class="field-odd">type</dt>
<dd class="field-odd"><p><code class="docutils literal notranslate"><span class="pre">str</span></code></p>
</dd>
<dt class="field-even">default</dt>
<dd class="field-even"><p><code class="docutils literal notranslate"><span class="pre">/var/lib/ceph/mgr/$cluster-$id</span></code></p>
</dd>
</dl>
</div></blockquote>
</dd></dl>

<dl class="std confval">
<dt id="confval-mgr_tick_period">
<code class="sig-name descname"><span class="pre">mgr_tick_period</span></code><a class="headerlink" href="#confval-mgr_tick_period" title="Permalink to this definition">¶</a></dt>
<dd><blockquote>
<div><p>mgr 向监视器发送信标、以及其它周期性检查的时间间隔，单位为秒。</p>
<dl class="field-list simple">
<dt class="field-odd">type</dt>
<dd class="field-odd"><p><code class="docutils literal notranslate"><span class="pre">secs</span></code></p>
</dd>
<dt class="field-even">default</dt>
<dd class="field-even"><p><code class="docutils literal notranslate"><span class="pre">2</span></code></p>
</dd>
</dl>
</div></blockquote>
</dd></dl>

<dl class="std confval">
<dt id="confval-mon_mgr_beacon_grace">
<code class="sig-name descname"><span class="pre">mon_mgr_beacon_grace</span></code><a class="headerlink" href="#confval-mon_mgr_beacon_grace" title="Permalink to this definition">¶</a></dt>
<dd><blockquote>
<div><p>上一个信标收到后过多久没反应就把它标记为已失效。</p>
<dl class="field-list simple">
<dt class="field-odd">type</dt>
<dd class="field-odd"><p><code class="docutils literal notranslate"><span class="pre">secs</span></code></p>
</dd>
<dt class="field-even">default</dt>
<dd class="field-even"><p><code class="docutils literal notranslate"><span class="pre">30</span></code></p>
</dd>
</dl>
</div></blockquote>
</dd></dl>

</div>
</div>



           </div>
           
          </div>
          <footer>
    <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
        <a href="../modules/" class="btn btn-neutral float-right" title="ceph-mgr 模块开发指南" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
        <a href="../" class="btn btn-neutral float-left" title="Ceph 管理器守护进程" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
    </div>

  <hr/>

  <div role="contentinfo">
    <p>
        &#169; Copyright 2016, Ceph authors and contributors. Licensed under Creative Commons Attribution Share Alike 3.0 (CC-BY-SA-3.0).

    </p>
  </div> 

</footer>
        </div>
      </div>

    </section>

  </div>
  

  <script type="text/javascript">
      jQuery(function () {
          SphinxRtdTheme.Navigation.enable(true);
      });
  </script>

  
  
    
   

</body>
</html>